﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections.ObjectModel;
using System.Text.RegularExpressions;
using System.Collections;
using System.Globalization;
using Model;

namespace Interfaces.Programa
{
    public partial class ModificarPrograma : System.Web.UI.Page
    {
        string inicial { get { return Convert.ToString(ViewState["inicial"]); } set { ViewState["inicial"] = value; } }  
        Miembroo directora { get { return (Miembroo)ViewState["directora"]; } set { ViewState["directora"] = value; } }
        ICollection list;
        ICollection<Miembroo> codirectora { get { return (ICollection<Miembroo>)ViewState["codirec"]; } set { ViewState["codirec"] = value; } }
        Model.Programa prog { get { return (Model.Programa)ViewState["Prog"]; } set { ViewState["Prog"] = value; } }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["programa"] != null)
            {
                if (!IsPostBack)
                {
                   prog = Session["programa"] as Model.Programa;
                    inicial = prog.Nombre;
                    nombreTbx.Text = prog.Nombre;
                    //DropDownList1.SelectedValue = prog.Area;

                    Miembroo mi = new Miembroo();
                    mi = DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(prog.CIDirectora);
                    if (mi != null)
                    {
                        directora = mi;
                        nombre.Text = mi.Nombre + " " + mi.ApellidoPaterno;
                        Button2.Visible = true;
                        
                    }
                    else
                        nombre.Text = "";
                    TextBox4.Text = prog.FechaInicio.ToShortDateString();
                    TextBox5.Text = prog.FechaFin.ToShortDateString();
                    list = DataBase.Miembro2.BDMiembro.DevolverTodos();

                    
                    
                        Miembros.DataSource = DataBase.Miembro2.BDMiembro.DevolverTodos();
                        Miembros.DataBind();
                        codirectora = new Collection<Miembroo>();
                        CodirectorasDataList0.DataSource = DataBase.Codirectora.BDCodirectora.DevolverCodirectoras(prog.CodigoPrograma);
                        CodirectorasDataList0.DataBind();
                        if (CodirectorasDataList0.Items.Count != 0)
                        {
                            Label13.Visible = true;
                        }
                }
            }
        }

        protected void Page_PreInit(object sender, EventArgs e)
        {
            if (Session["BuscarMaster"] != null)
            {
                string res = (string)Session["BuscarMaster"];
                this.MasterPageFile = res;
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            this.MultiView1.ActiveViewIndex = 1;

        }
        protected void checkDate(object sender, EventArgs e)
        {

        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("CI", typeof(long)));
            dt.Columns.Add(new DataColumn("Nombre", typeof(String)));
            dt.Columns.Add(new DataColumn("ApellidoPaterno", typeof(String)));
            dt.Columns.Add(new DataColumn("ApellidoMaterno", typeof(String)));
            dt.Columns.Add(new DataColumn("Cargo", typeof(String)));
            String format = @"^[a-zA-Z0-9 ]";
            Collection<Miembroo> resp = new Collection<Miembroo>();
            if (!String.IsNullOrEmpty(TextBox6.Text)){
                if (!Regex.IsMatch(TextBox6.Text, format))
                    throw new Exception("Formato incorrecto");}
            list = DataBase.Miembro2.BDMiembro.DevolverTodos();
            if (list != null){
                if (TextBox6.Text != null){
                    foreach (DataRowView prod in list)
                    {
                        Miembroo m = new Miembroo();
                        m.CI = Convert.ToInt64(prod["CI"]);
                        m.Cargo = prod["Cargo"].ToString();
                        m.Nombre = prod["Nombre"].ToString().ToLower(CultureInfo.CurrentCulture);
                        m.ApellidoPaterno = prod["ApellidoPaterno"].ToString().ToLower(CultureInfo.CurrentCulture);
                        m.ApellidoMaterno = prod["ApellidoMaterno"].ToString().ToLower(CultureInfo.CurrentCulture);
                        String lword = TextBox6.Text.ToLower(CultureInfo.CurrentCulture);
                        if (m.Nombre.Contains(lword) || m.ApellidoPaterno.Contains(lword) || m.CI.ToString().Contains(lword))
                        {
                            DataRow dr = dt.NewRow();
                            dr[0] = (m.CI.ToString());
                            dr[1] = (m.Nombre);
                            dr[2] = (m.ApellidoPaterno);
                            dr[3] = (m.ApellidoMaterno);
                            dr[4] = (m.Cargo);
                            dt.Rows.Add(dr);


                        }
                    }
                }
            }
            if (dt.Rows.Count > 0)
            {
                DataView dv = new DataView(dt);
                ICollection t = (ICollection)dv;
                Miembros.DataSource = t;
                Miembros.DataBind();
            }

        }

        protected void DirectorBtn_Click(object sender, EventArgs e)
        {
            //if (!Page.IsPostBack)
            {
                LinkButton b = sender as LinkButton;
                bool sta = false;
                Miembroo auxDirectora = new Miembroo();
                try
                {
                    auxDirectora = DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(Convert.ToInt64(b.CommandArgument));
                    if (codirectora != null)
                    {
                        foreach (var item in codirectora)
                        {
                            if (auxDirectora.CI == item.CI)
                            {
                                Response.Write("<script>alert('La directora no puede ser codirectora'); </script>");
                                sta = true;
                            }
                            break;
                        }
                    }
                    if (!sta)
                    {
                        directora = auxDirectora;
                        nombre.Text = directora.Nombre + " " + directora.ApellidoPaterno;
                        Label9.Text = directora.CI.ToString();
                        Button2.Visible = true;
                    }
                }
                catch (Exception ex)
                {
                    errorLb.Text = ex.Message;
                }
            }
        }

        protected void DataList3_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Volver_Click(object sender, EventArgs e)
        {
            this.MultiView1.ActiveViewIndex = 0;
        }


        protected void Button9_Click(object sender, EventArgs e)
        {
            error.Text = " ";
            try
            {
                if (directora != null && codirectora != null)
                {
                    Processes.Programa.GestorPrograma.ModificarPrograma(nombreTbx.Text, TextBox4.Text, TextBox5.Text, DropDownList1.SelectedValue, directora, inicial, prog.CodigoPrograma);
                    inicial = nombreTbx.Text;
                    Response.Redirect("ProgramaGuardado.aspx");
                }
                else
                    error.Text = "Debe asignar al menos una directora";
            }
            catch (Exception ex)
            {
                error.Text = ex.Message;
            }
        }

        protected void CodiBtn_Click(object sender, EventArgs e)
        {
            LinkButton b = sender as LinkButton;
            bool esta = false;
            Miembroo mi = new Miembroo();
            mi = DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(Convert.ToInt64(b.CommandArgument));
            if (directora != null)
            {
                if (directora.CI == mi.CI)
                {
                    errorLb.Text = "La directora no puede ser codirectora";
                    esta = true;
                }
            }
            
            codirectora = DataBase.Codirectora.BDCodirectora.DevolverCodirectoras(prog.CodigoPrograma);
            if (codirectora != null)
            {
                foreach (Miembroo item in codirectora)
                {
                    if (item.CI == mi.CI)
                    {
                        errorLb.Text = "Esta persona ya es codirectora";
                        esta = true;
                        break;
                    }
                }
            }
            else
                codirectora = new Collection<Miembroo>();
            if (!esta)
            {
                codirectora.Add(mi);
                DataBase.Codirectora.BDCodirectora.AgregarCodirectora(mi.CI, prog);
            }
            CodirectorasDataList0.DataSource = codirectora;
            CodirectorasDataList0.DataBind();
        }
        protected void Button6_Click(object sender, EventArgs e)
        {
            LinkButton b = sender as LinkButton;
            foreach (Miembroo p in codirectora)
            {
                if (p.CI == Convert.ToInt64(b.CommandArgument))
                {
                    codirectora.Remove(p);
                    DataBase.Codirectora.BDCodirectora.EliminarCodirectora(p.CI, prog);
                    break;
                }
            }
            codirectora = DataBase.Codirectora.BDCodirectora.DevolverCodirectoras(prog.CodigoPrograma);
            CodirectorasDataList0.DataSource = codirectora;
            CodirectorasDataList0.DataBind();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            nombre.Text = String.Empty;
            directora = null;

        }

        protected void DataList3_ItemCommand(object source, DataListCommandEventArgs e)
        {


        }

    }
}